#include <iostream>
using std::cout;
using std::endl;

class Point{
public:
    Point(int y = 0)
    : _iy(y)
    { cout << "Point(int = 0)" << endl; }

    //静态成员不能直接访问非静态数据成员，因为没有this指针
    //通过这种方式访问的不是本对象的非静态数据成员
    static void getY(const Point & rhs){
        cout << rhs._iy << endl;
    }
private:
    static int _ix;
    int _iy;
};
int Point::_ix = 0;

void test0(){
    //这里不是调用了默认无参构造
    /* Point pt; */
    Point pt(5);

    Point pt2(10);
    pt.getY(pt2);

    //最后的括号不写，表示没有手动传入参数进行了构造
    //最后的括号写，与内置保持一致
    //更多的时候写小括号（推荐）
    Point * p = new Point();
    p->getY(pt2);

    //不写小括号，就不能确保进行了初始化
    //其本质是没有进行初始化，存的是脏数据
    //编译器有优化，但是为了在所有的环境中都不出错，
    //写上小括号能够确保进行了初始化
    int * p2 = new int();
    cout << *p2 << endl;
}

int main(void){
    test0();
    return 0;
}
